Test utilisateur Dall-e 3
Explorer l'IA, les données et la technologie
Jointures Broadcast vs Jointures Skewed
Ils constituent tous trois des points d'entrée pour interagir avec le moteur de traitement :
La configuration de SparkContext implique de configurer directement le Spark Master ou d'utiliser SparkConf pour une configuration détaillée.
La session Spark utilise un modèle de builder.
SparkContext gère directement les RDD, tandis que SpárkSession intègre un SparkContext qui gère ces interactions.
SparkContext ne prend pas en charge les DataFrames, seule SparkSession le fait.
Dans Spark, les transformations étroites sont celles qui ne nécessitent pas de brassage. Cela améliore les performances car les opérations peuvent être traitées individuellement dans leurs propres partitions. Voici quelques-unes de ces opérations : filter, map et union. Les jointures ne peuvent être une fonction étroite que si l'ensemble de données est partitionné par la clé de jointure.
À l'inverse, les opérations qui nécessitent un brassage entre les workers sont appelées partitions larges. Elles pénalisent les performances en termes de temps d'exécution, mais sont parfois inévitables. Les jointures, groupbykey et reduceByKey sont des opérations qui nécessitent un brassage des données.
L'évaluation paresseuse est une fonctionnalité de Spark qui empêche l'exécution des transformations tant qu'une action n'est pas exécutée. Grâce à Catalyst, elle recherche la méthode la plus efficace pour combiner les transformations.
Cela dépend de la taille de l'ensemble de données. Pyspark est généralement plus rapide que Python car il peut répartir la charge de travail sur différents nœuds et traiter les données en parallèle. Cependant, il existe…
Soit le fichier CSV suivant :
Soit les fichiers CSV suivants :
Charger les dataframes
Joindre les dataframes pour obtenir les noms d'utilisateur et les montants des transactions
Calculer le total dépensé par utilisateur
Trier par ordre décroissant du montant total
Considérons le dataframe suivant :
Le cache enregistre le RDD ou le dataframe dans Mémoire uniquement. La méthode persist permet de la stocker au niveau défini par l'utilisateur : MÉMOIRE_SEULEMENT, MÉMOIRE_ET_DISQUE, DISQUE_SEULEMENT, etc.
Un shuffle implique que les nœuds doivent envoyer des données à travers le cluster pour effectuer des opérations. Ces opérations sont appelées opérations étendues, et la transmission de toutes ces données entraîne une surcharge en termes de temps et d'utilisation des ressources. Dans les cas extrêmes, cela peut entraîner l'échec d'une tâche.
L'optimiseur Catalyst examine le plan d'exécution du DAG et propose un ordre spécifique pour appliquer les transformations, afin d'optimiser l'utilisation des ressources. Disponible uniquement pour les dataframes et les jeux de données.
La première consiste à utiliser des transformations étroites autant que possible. La seconde est une diffusion dans les jointures pour les tables de petite taille.
Je commencerais par examiner le plan d'exécution (df.explain() ou interface Spark) pour identifier les étapes ou transformations qui déclenchent des remaniements ou des analyses importants.
Une fois qu'une action est appelée, Catalyst crée un graphe depuis l'action, en analysant la transformation précédente jusqu'à son arrivée aux jeux de données sources. Une tâche Spark est divisée en étapes, qui constituent à leur tour un ensemble de tâches. Il existe des étapes étroites et des étapes larges. Les étapes étroites signifient qu'aucun remaniement n'est nécessaire et que toutes les Les transformations sont effectuées dans chaque worker. En revanche, dans les étapes larges, les données sont remaniées entre les partitions.
Dans map, une fonction est appliquée à chaque élément du RDD.
Dans flatmap, une colonne produit une ou plusieurs colonnes.
Dans mapPartitions, une fonction est appliquée à une partition entière plutôt qu'à chaque élément.Par exemple, si nous voulions obtenir la moyenne d'une partition,
Exemples :
map
mapPartitions
flatMap
Une jointure broadcast est utilisée lorsqu'une table est trop petite pour être jointe à une table plus grande. Il est donc judicieux de la diffuser aux autres nœuds pour une jointure plus efficace. Une jointure asymétrique se produit lorsque la clé de jointure n'est pas répartie uniformément, ce qui crée une surcharge dans certaines partitions et une charge insuffisante dans d'autres. Un signe d'une jointure biaisée est que les partitions contiennent très peu ou trop d'éléments. Vous pouvez utiliser le salage pour atténuer une jointure biaisée. Exemples :
diffusion
salage biaisé